扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
下面主要以VB为例介绍一下SAP接口RFC的开发思路。在SAP客户端SAP Gui Client安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。RFC接口程序开发,主要用的是"SAP.Functions"这个控件,通过控件在外部程序模拟SAP Gui Client的用户登录和函数调用,然后返回函数的值。请看下面的程序片段和重点注解(尤其是test_Click()):
Private Sub Command1_Click() ' 定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限) Dim logname As String * 22, password As String * 22 Call logonr3(logname, password) ' 调用SAP登录界面程序 If logflag Then ' 调用生产、开发系统开关 StatusBar1.Visible = True StatusBar1.SimpleText = "正在登录SAP R/3系统..." Dim R3AppServer As String, R3Client As String, R3SystemNo As String If Form2.opPRD.Value Then ' 以下服务器参数请根据客户配置情况更改 R3AppServer = "10.3.1.4" ' 生产系统服务器IP R3Client = "800" '生产系统集团代码 R3SystemNo = "00" '生产系统号 Else R3AppServer = "10.3.3.1" ' 开发系统服务器IP R3Client = "101" R3SystemNo = "00" End If Unload Form2 ' 释放 Form2 , 所有控件及值不可用 Set Functions = CreateObject("Sap.Functions") ' 创建RFC的本地对象 Set Connect = Functions.Connection ' 设置连接 Connect.ApplicationServer = R3AppServer ' 赋值服务器IP Connect.Client = R3Client ' 赋值SAP集团代码 Connect.Language = "ZH" ' 置SAP系统界面中文 Connect.User = Trim(logname) ' 赋值SAP登录用户名 Connect.password = Trim(password) ' 赋值SAP登录用户密码 Connect.SystemNumber = R3SystemNo ' 赋值SAP系统号 If Not Connect.Logon(0, True) Then ' 软件登录SAP并判断 MsgBox "登录SAP R/3失败,请重新登录!", vbOKOnly + vbExclamation, "系统提示" Command1.SetFocus Else ' 登录SAP成功 Command1.Enabled = False Command2.Enabled = True test.Enabled = True End If StatusBar1.SimpleText = "" StatusBar1.Visible = False End If End Sub Private Sub Command2_Click() ' 注销SAP登录 Connect.LogOff Command2.Enabled = False Command1.Enabled = True test.Enabled = False End Sub Private Sub Command3_Click() ' 退出SAP接口演示程序 If Form1.Command2.Enabled Then MsgBox "退出前请断开SAP R/3系统!", vbOKOnly + vbInformation, "系统提示" Else End End If End Sub Private Sub Form_Load() Command2.Enabled = False test.Enabled = False logoflag = False End Sub Private Sub test_Click() ' SAP RFC远程调用处理主演示 Dim GetCustomers As Object Dim Customers As Object Dim i As Integer ' 通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET ' 赋要调用的SAP内建函数名 Set GetCustomers = Functions.Add("RFC_CUSTOMER_GET") GetCustomers.Exports("KUNNR") = "0000000103" ' 向函数入口赋值(客户代码) ' 向函数入口赋查询表名称 Set Customers = GetCustomers.Tables("CUSTOMER_T") If GetCustomers.Call Then ' 调用成功遍历显示客户所有信息条目 For i = 1 To Customers.rowcount MsgBox Customers(i, "KUNNR") Next i Else MsgBox " 搜索出错! 出错信息: " + GetCustomers.Exception End If End Sub |
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦